The present invention relates to a distributed memory type parallel computer, more particularly to a technique for transferring data between processes executed by the distributed memory type parallel computer.
A distributed memory type parallel computers having a plurality of processor elements, which comprise a memory and a CPU (Central Processing Unit), connected by a communication network have been used in order to execute a program written in a language for handling large amounts of data (such as Fortran) at high speed.
A distributed memory type parallel computer can execute a plurality of processes in parallel. However, the plurality of processes can not be processed independently. For example, when there is a variable that is duplicatively assigned throughout the plurality of processes (hereinafter called a duplicatively assigned variable) and any of the plurality of processes substitutes data into the duplicatively assigned variable, it is necessary to make the data in the duplicatively assigned variable for all processes identical. In order to make the data identical for all processes, data transfer must be carried out between the processes.
The object of the present invention is to provide a technique for high-speed data transfer between processes if substituting data into the duplicatively assigned variable.
A first aspect of the present invention is directed to a distributed memory type parallel computer for executing a plurality of processes using a plurality of processing devices connected by a communication network. Each of the processing devices for executing at least one process among the plurality of processes has a scheduler for scheduling data transfer of the substituted data to each process if the process substitutes data into a variable duplicatively assigned throughout the plurality of processes, and a communication controller for carrying out data transfer via the communication network in accordance with the scheduler. With suitable scheduling, data transfer is speeded up.
It is possible to configure the communication controller to transmit the substituted data to the process itself via the communication network on behalf of the substitution by the process. Since there are often cases where a data address arrangement becomes complicated if a duplicatively assigned variable is a high dimensional array variable, data transfer via a communication network is effective rather than memory transfer. The communication controller can be configured to perform packet transfer, for example.
It is also possible to configure each processing device described above to further comprise a generator for generating information relating to data transfer. The information is commonly used by the communication controller if transferring data to each process. By using the characteristic that a duplicatively assigned variable has the same structure in each process, the information relating to data transfer is used in data transfer to all processes.
It is also possible to configure the information relating to data transfer to include a base address and address arrangement information for the substituted data. In this way, data transferred to each process can be simply read out. It is also possible to configure the information to further include a base address and address arrangement information for the destination process. In this way, storage of data at the destination process can be carried out easily. The address arrangement information includes a movement distance between array elements (also called access length) and the number of repetitions (the number of array elements for each dimension), for example.
It is also possible to configure the scheduler described above to schedule data transfer to be carried out on behalf of the data substitution process by the process. Data transfer to an own process is also effective in cases where data transfer is carried out via a communication network.
It is also possible to configure the scheduler described above to carry out scheduling, if there are a plurality of substituting processes that substitute data into a variable duplicatively assigned throughout the plurality of processes, so as to avoid the duplication of destination process of the substituting processes. If the destination process is duplicated, it is ineffective because data transfer processing becomes sequential, and data transfer is slowed down overall.
For example, if an identification number is appended to each of the plurality of processes, and the scheduler determines destination processes in ascending or descending order of the identification number based on the identification number of the substituting process, the destination process is not duplicated and data transfer is speeded up.
A second aspect of the present invention is directed to a program for a distributed memory type parallel computer for executing a plurality of processes using a plurality of processing devices connected via a communication network. The program causes a processing device for carrying out at least one of the plurality of processes to perform the steps of: scheduling data transfer of the substituted data to each of process if the process substitutes data into a variable duplicatively assigned throughout the plurality of processes, and instructing data transfer via the communication network in accordance with the scheduling.
A modification of the first aspect of the present invention can be applied to this program for a distributed memory type parallel computer. Also, the program can be stored in a storage medium or storage device such as a floppy disk, a CD-ROM, a magneto-optical disk, semiconductor memory or hard disk.